package com.hospital.system.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.hospital.system.dao.MenuDao;
import com.hospital.system.dao.RoleDao;
import com.hospital.system.entity.Menu;
import com.hospital.system.entity.Role;
import com.hospital.system.entity.RoleMenu;
import com.hospital.system.entity.TreeNode;
import com.hospital.system.service.RoleService;
import com.hospital.util.DataGridView;
@Service
@Transactional
public class RoleServiceImpl implements RoleService {
	@Autowired
	RoleDao roleDao;
	@Autowired
	MenuDao menuDao;
	@Override
	public List<Role> loadAllRole(Role role) {
		return roleDao.loadAllRole(role);
	}
	@Override
	public int insertRole(Role role) {
		return roleDao.insertRole(role);
	}
	@Override
	public int updateRole(Role role) {
		return roleDao.updateRole(role);
	}
	@Override
	public int deleteRoleId(Integer role_id) {
		return roleDao.deleteRoleId(role_id);
	}
	@Override
	public int deleteRoleUserId(Integer role_id) {
		return roleDao.deleteRoleUserId(role_id);
	}
	@Override
	public int deleteRoleMenuId(Integer role_id) {
		return roleDao.deleteRoleMenuId(role_id);
		
	}
	  @Override
	    public DataGridView initRoleMenuTreeJson(Integer role_id) {
	        //查询所有可用菜单
	        List<Menu> allmenus = menuDao.loadAvailableMenu();
	        //按照角色id查询菜单
	        List<Menu> roleMenu=menuDao.queryMenuByRoleId(role_id);
	        //如果roleMenu菜单的id与allmenus菜单的id相等那么可以查询该角色已有的菜单 复选框为true 1为选中
	        List<TreeNode> data=new ArrayList<>();
	        for(Menu m1:allmenus){
	            String checkArr="0";
	            for(Menu m2:roleMenu){
	               if(m1.getMenu_id()==m2.getMenu_id()){
	                   checkArr="1";//选中
	                   break;
	               }
	            }
	            Integer id = m1.getMenu_id();
	            Integer pid = m1.getParent_id();
	            String title = m1.getMenu_name();
	            data.add(new TreeNode(id,pid,title,checkArr));
	        }
	        return new DataGridView(data);
	    }

	    @Override
	    public void saveRoleMenu(RoleMenu roleMenu) {
	        Integer role_id=roleMenu.getRole_id();
	        Integer[] menu_ids=roleMenu.getMenu_ids();
	        //根据用户id删除角色拥有的菜单
	        roleDao.deleteRoleMenuId(role_id);
	        //循环添加角色分配的菜单
	        for(Integer menu_id:menu_ids){
	            roleDao.insertRoleMenu(role_id,menu_id);
	        }
	    }
	
}
